package com.cg.design.graphicdesignpattern.prototype.framework;

/**
 * Product接口
 *
 * @program: LeetCode->Product
 * @description: Product接口，负责定义用于复制现有实例来生成新实例的方法
 * @author: cg
 * @create: 2022-03-20 16:05
 **/
public interface Product extends Cloneable {

    /**
     * 用于“使用”的抽象方法
     *
     * @param s
     */
    public abstract void use(String s);

    /**
     * 用于复制实例的抽象方法
     * 要想使用clone()方法，被复制对象的类必须实现Cloneable接口，不论是被复制对象的类实现了Cloneable接口，还是其某个父类实现了Cloneable接口，亦或者是被复制对象的类实现了其Cloneable接口的子接口都可以
     * Cloneable接口是用来标记“可以使用clone方法进行复制”，在其接口中没有声明任何方法，这种接口被称为“标记接口”
     *
     * @return
     */
    public abstract Product createClone();

}
